package framework.util.easypoi;

import java.util.List;

import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult;
import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler;

/**
 * 通用的Excel校验处理类<br/>
 * easypoi的校验注解：https://blog.csdn.net/zhongzk69/article/details/91868995
 *
 * @author 吴宇亮
 * @date 2019年1月23日
 */
public class IExcelVerifyHandlerImpl implements IExcelVerifyHandler<ExcelHelperBo> {

	/** 默认第二行为数据的开始行 **/
	private static final int START_ROW = 2;

	/** excel从第startRowNum开始导入数据 **/
	private int rowNum;

	/** 要自动转换的字段 **/
	private List<ExcelTransformHelper> transformList;

	public IExcelVerifyHandlerImpl() {
		rowNum = START_ROW;
	}
	
	public IExcelVerifyHandlerImpl(int startRowNum) {
		this.rowNum = startRowNum;
	}

	/**
	 * @param startRowNum 业务数据从第startRowNum行开始。startRowNum取值从1开始，第一行为1，第二行为2
	 * @param transformList 正则校验后，要自动转换的字段名称
	 */
	public IExcelVerifyHandlerImpl(int startRowNum, List<ExcelTransformHelper> transformList) {
		this.rowNum = startRowNum;
		this.transformList = transformList;
	}

	/**
	 * 对bo的非String类型的字段进行验证，并且把合法的字段设到对应的字段里
	 * 参考博客：https://blog.csdn.net/qq_34988540/article/details/83050187#_265
	 */
	@Override
	public ExcelVerifyHandlerResult verifyHandler(ExcelHelperBo obj) {
		ExcelVerifyHandlerResult result = new ExcelVerifyHandlerResult();
		obj.setRowNum(rowNum++);
		
		try {
			_EasypoiUtil.transformField(obj, transformList);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
        result.setSuccess(true);
        return result;
	}

	public int getRowNum() {
		return rowNum;
	}
}
